<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        

        // 1、forEach
        // Array.prototype.myForEach = function(func) {
        //     for(var i = 0; i < this.length; i++){
        //         func(this[i], i);
        //     }
        // }

        // personArr.myForEach(function (ele, index) {
        //     console.log(ele);

        // });
        
        
        // 2、filter筛选
        // Array.prototype.myFilter = function (func) {
        //     var arr = [];
        //     for(var i = 0; i < this.length; i++) {
        //         if(func(this[i], i)) {
        //             arr.push(this[i]);
        //         }
        //     }
        //     return arr;
        // }

        // var newArr = personArr.myFilter(function(ele, index) {
        //     if(index%2 == 0) {
        //         return true;
        //     }else {
        //         return false;
        //     }
        // });
        // console.log(newArr);


        // 3、map

        // Array.prototype.myMap = function (func) {
        //     var arr = [];
        //     for(var i = 0; i < this.length; i++) {
        //         if(this[i] && typeof this[i] == 'object') {
        //             var newObj = {};
        //             deepClone(newObj, this[i]);
        //             arr.push(func(newObj, i));
        //         }else{
        //             arr.push(func(this[i], i));
        //         }
        //     }
        //     return arr;
        // }

        // var newArr = personArr.myMap(function(ele, index) {
        //     return ele;
        // })
        // console.log(newArr);

        // function deepClone(target, option) {
        //     if(option != null) {
        //         for(var prop in option) {
        //             var src = target[prop];
        //             var copy = option[prop];
        //             if(copy && typeof copy == 'object') {
        //                 if(Object.prototype.toString.call(copy) == '[object Array]') {
        //                     src = [];
        //                 }else {
        //                     src = {};
        //                 }
        //                 target[prop] = deepClone(src, copy);

        //             }else {
        //                 target[prop] = copy;
        //             }
        //         }
        //     }
        //     return target;
        // }


        // 4、reduce
        // var arr = [1,2,3,4,5];

        // Array.prototype.myReduce = function (func, init) {
        //     var previous = init, k = 0;
        //     if(init  === undefined) {
        //         previous = this[0]; 
        //         k = 1;
        //     }
        //     for(k; k < this.length; k++) {
        //         previous = func(previous, this[k], k);
        //     }
        //     return previous;
        // }

        // var value = arr.myReduce(function(preValue, ele, index) {
        //     return preValue + ele;
        // });
        // console.log(value);

        // reduceRight
        var arr = [1,2,3,4,5];

        var value = arr.reduceRight(function (preValue, ele, index) {
            console.log(index);
            return 'aimee';
        });
        













        




        


        

        

        
    
    </script>
</body>
</html>